#!/usr/bin/env python3
import pandas as pd
import numpy as np
import nltk
from nltk.corpus import stopwords
import matplotlib.pyplot as plt

"""
函数说明：
param:
	data - 数据
	col - 某一列数据（这里是列名）
	top_num - 出现频率最高的前top_num位
returns:

"""
def key_plot(data,col,top_num):
	s = data[col].map(nltk.tokenize.word_tokenize)
	#记录不在stopSet中的所有词出现的频率
	fdist = nltk.FreqDist(words.lower() for x in s for words in x if words.lower() not in stopSet)
	# print(fdist.values(),fdist.keys())
	top = pd.DataFrame(fdist.most_common(top_num),columns = ['query','times'])
	print(top)
	#将query这一列为索引列
	top = top.set_index('query')
	# print(top)
	top.plot(kind = 'bar')


if __name__ == '__main__':
	train = pd.read_csv("./data/train.csv")
	test = pd.read_csv("./data/test.csv")
	# print(train.head())
	# print(train.columns)
	#查看数据的所有列的列名,等同于上面这行代码
	# print(train.columns.values)
	# print(len(train))
	#获取到query这一列数据中元素的唯一值（即去掉重复的）
	# print(train['query'].unique()[:10])
	# print(len(train['query'].unique()))
	#查看product_title中所有元素的唯一值的个数有多少
	# print(len(train['product_title'].unique()))
	#查看测试集和训练集中有多少是不重复的个数有多少
	# print(len(np.setdiff1d(test['product_title'].unique(),train['product_title'].unique())))
	#查看测试集和训练集中有多少是重复的个数有
	# print(len(np.intersect1d(test['product_title'].unique(),train['product_title'].unique())))
	# print(pd.DataFrame(train))
	# 将某一列中所有数据使用tokenize.word_tokenize划分开
	# s = train['query'].map(nltk.tokenize.word_tokenize)
	stopSet = set(stopwords.words('english'))
	#获取到train训练集中的query列中的出现次数在前十的关键词
	key_plot(train,'query',10)
	key_plot(test,'query',10)
